import moment from "moment";

export default {
  // 跳转 
  jumpUser(vm, uid){
    let routeUrl = vm.$router.resolve({
      path: "/u",
      query: {id:uid}
    });
  
    window.open(routeUrl.href, '_blank');
  },
  // 抽取得到的用户关注
  toFollow(vm, followId, isFollow, callback){
    const userId = localStorage.getItem('userId')
    const token = localStorage.getItem('token')

    // 要求当前用户必须登录
    if(!userId || !token){
      vm.$message.warning('请用户先登录！')
      return
    }
    
    // 特判:自己关注自己
    if(userId == followId){
      vm.$message.warning('请勿关注自己！')
      return
    }

    // 分类讨论
    // 1.已关注，那么弹出选项：是否取消关注？
    // 2.未关注，弹出选项：是否关注？
    if(isFollow){
      vm.$messageBox.confirm('是否取消关注该用户？', '关注', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        // 取消关注请求
        this.doDeleteAxios(vm, '/api/user/follows', {
          data: vm.$qs.stringify({userId, followId}), 
          headers: {token, 'Content-Type': 'application/x-www-form-urlencoded' }
        }, callback)
      }).catch(()=>{})
    }else{
      vm.$messageBox.confirm('是否关注该用户？', '关注', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        // 关注请求
        this.doPostAxios(vm, '/api/user/follows',
          vm.$qs.stringify({userId, followId}),
          {
            headers: {token }
          }, callback )
      }).catch(()=>{})
    }
  },
  // 基本的日期初始化
  dateFormat(date){
    const dif = moment().diff(moment(date)) / 24 / 3600000
    
    if(dif > 1) return moment(date).format("YYYY-MM-DD HH:mm:ss")
    return  moment(date).fromNow()
  },
  // 基本then处理
  doAxiosthen(vm, res, callback){
    if(res.status != 200){
      vm.$message.error(res.msg)
      return;
    }
    callback(res.data, res.msg)
  },
  // 基本get
  doGetAxios(vm, url, config, callback){
    vm.$axios.get(url, config).then(rep=>{
      this.doAxiosthen(vm, rep.data, callback)
    }).catch(Error=>{
        console.log(Error)
    })
  },
  // 基本post
  doPostAxios(vm, url, data, config, callback){
    vm.$axios.post(url, data, config).then(rep=>{
      this.doAxiosthen(vm, rep.data, callback)
    }).catch(Error=>{
        console.log(Error)
    })
  },
  // 基本delete
  doDeleteAxios(vm, url, config, callback){
    vm.$axios.delete(url, config).
    then(rep=>{
      this.doAxiosthen(vm, rep.data, callback)
    }).catch(Error=>{
      console.log(Error)
    })
  },
  // 基本put
  doPutAxios(vm, url, data, config, callback){
    vm.$axios.put(url, data, config).then(rep=>{
      this.doAxiosthen(vm, rep.data, callback)
    }).catch(Error=>{
        console.log(Error)
    })
  }
}

